'''
递归函数：
举个例子，我们来计算阶乘n! = 1 x 2 x 3 x ... x n，用函数fact(n)表示，可以看出：
fact(n)=n!=1×2×3×⋅⋅⋅×(n−1)×n=(n−1)!×n=fact(n−1)×n
'''
'''
递归函数的注意事项：
1. 递归函数必须返回一个结果
2. 递归函数必须调用自身
3. 递归函数必须存在结束条件
'''
def fact(n):
    if n == 1: # 必须存在结束条件，不然会死循环
        return 1
    return n * fact(n - 1)
print(fact(3)) # 1 * 2 * 3 = 6
print(fact(5)) # 1 * 2 * 3 * 4 * 5 = 120
'''
执行过程
第1次：
5 * fact(4) 等于 5 * 24
第2次:
fact(4) = 4 * fact(3)
结果：24
第3次：
fact(3) = 3 * fact(2)
结果：6
第4次：
fact(2) = 2 * fact(1)
结果：2
第5次：
fact(1) = 1
'''

